package com.sheng.leetcode.year2023.month05.day11;

import org.junit.Test;

/**
 * @author liusheng
 * @date 2023/05/11
 * <p>
 * 1016. 子串能表示从 1 到 N 数字的二进制串<p>
 * <p>
 * 给定一个二进制字符串 s 和一个正整数 n，如果对于 [1, n] 范围内的每个整数，<p>
 * 其二进制表示都是 s 的 子字符串 ，就返回 true，否则返回 false 。<p>
 * 子字符串 是字符串中连续的字符序列。<p>
 * <p>
 * 示例 1：<p>
 * 输入：s = "0110", n = 3<p>
 * 输出：true<p>
 * <p>
 * 示例 2：<p>
 * 输入：s = "0110", n = 4<p>
 * 输出：false<p>
 * <p>
 * 提示：<p>
 * 1 <= s.length <= 1000<p>
 * s[i] 不是 '0' 就是 '1'<p>
 * 1 <= n <= 10^9<p>
 * <p>
 * 来源：力扣（LeetCode）<p>
 * 链接：<a href="https://leetcode.cn/problems/binary-string-with-substrings-representing-1-to-n">1016. 子串能表示从 1 到 N 数字的二进制串</a><p>
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。<p>
 */
public class LeetCode1016 {

    @Test
    public void test01() {
//        String s = "0110";
//        int n = 3;
        String s = "0110";
        int n = 4;
        System.out.println(new Solution().queryString(s, n));
    }
}

class Solution {
    public boolean queryString(String s, int n) {
        for (int i = 1; i <= n; i++) {
            // int 转化为二进制字符串
            String toString = Integer.toString(i, 2);
            if (!s.contains(toString)) {
                return false;
            }
        }
        return true;
    }
}
